//
// Created by nilyang on 2022/11/5.
//

// C program to detect Operating System

#include <stdio.h>
#include "os_detect.h"

// Driver Code
int os_detect()
{

// Checking for windows OS with
// _WIN32 macro
#ifdef _WIN32
    printf("Hey Geek it seems that"
		"you are working on a Windows OS.\n");

// Checking for mac OS with
// __APPLE__ macro
#elif __APPLE__
    printf("Hey Geek it seems that you"
           "are working on a Mac OS.\n");

// Checking for linux OS with
// __linux__ macro
#elif __linux__
    printf("Hey Geek it seems that you"
		"are working on a Linux OS.\n");

// Checking for iOS embedded OS with
// TARGET_OS_EMBEDDED macro
#elif TARGET_OS_EMBEDDED
	printf("Hey Geek it seems that you"
		"are working on an iOS embedded OS.\n");

// Checking for iOS simulator OS with
// TARGET_IPHONE_SIMULATOR macro
#elif TARGET_IPHONE_SIMULATOR
	printf("Hey Geek it seems that you"
		"are working on an iOS simulator OS.\n");

// Checking for iPhone OS with
// TARGET_OS_IPHONE macro
#elif TARGET_OS_IPHONE
	printf("Hey Geek it seems that you"
		"are working on an iPhone OS.\n");

// Checking for MAC OS with
// TARGET_OS_MAC macro
#elif TARGET_OS_MAC
	printf("Hey Geek it seems that you"
		"are working on a MAC OS.\n");

// Checking for Android OS with
// __ANDROID__ macro
#elif__ANDROID__
	printf("Hey Geek it seems that you"
		"are working on an android OS.\n");

// Checking for unix OS with
// __unix__ macro
#elif __unix__
	printf("Hey Geek it seems that you"
		"are working on a unix OS.\n");

// Checking for POSIX based OS with
// _POSIX_VERSION macro
#elif _POSIX_VERSION
	printf("Hey Geek it seems that you"
		"are working on a POSIX based OS.\n");

// Checking for Solaris OS with
// __sun macro
#elif __sun
	printf("Hey Geek it seems that you"
		"are working on a Solaris OS.\n");

// Checking for HP UX OS with
// __hpux macro
#elif __hpux
	printf("Hey Geek it seems that you"
		"are working on a HP UX OS.\n");

// Checking for BSD OS with
// BSD macro
#elif BSD
	printf("Hey Geek it seems that you"
		"are working on a Solaris OS.\n");

// Checking for DragonFly BSD OS with
// __DragonFly__ macro
#elif __DragonFly__
	printf("Hey Geek it seems that you"
		"are working on a DragonFly BSD OS.\n");

// Checking for FreeBSD OS with
// __FreeBSD__ macro
#elif __FreeBSD__
	printf("Hey Geek it seems that you"
		"are working on a FreeBSD OS.\n");

// Checking for Net BSD OS with
// __NetBSD__ macro
#elif __NetBSD__
	printf("Hey Geek it seems that you"
		"are working on a Net BSD OS.\n");

// Checking for Open BSD OS with
// __OpenBSD__ macro
#elif __OpenBSD__
	printf("Hey Geek it seems that you"
		"are working on an Open BSD OS.\n");

// If neither of them is present
// then this is printed...
#else
	printf("Sorry, the system are"
		"not listed above.\n");
#endif
    return 0;
}
